iT邦幫忙

2023 iThome 鐵人賽

DAY 26
0
DevOps

在open source環境,建置container環境及k8s(Minikube)的API佈署環境系列 第 26

[Day26]使用 GitLab CI/CD 實現 Kubernetes 軟體部署:從建置到部署的完整流程

  • 分享至 

  • xImage
  •  

前言

持續整合與持續部署(CI/CD)已成為現代軟體開發的重要部分。透過 GitLab CI/CD,您可以自動化軟體建置、測試以及部署流程,並確保交付穩定可靠的應用程式。本文是用兩個docker來完成,分別是用gitlab runner連接本機的docker位置,就是前幾天toml中設定,用來佈署docker,第二個是透過ssh的方式連接要佈署的k8s的主機方式,也可以通通都用一種方式來達成,因為測試程式沒有完成,所以並未加入此流程。

GitLab-ci.yaml

這份gitlab.ci,每當main改動時,可以完成打包docker到docker hub,然後從docker hub拉下佈署到minikube,可以自己更改變數及指令,ssh是使用密碼登錄,會產生安全性問題,也可以設定token登陸會比較安全,tag要改成在runner設定時輸入的tag name
其他變數設定在
https://ithelp.ithome.com.tw/upload/images/20230821/20161653X42M9sdHI9.png

variables:
  FOLDER_NAME: "repository name"
  DOCKER_IMAGE: "docker hub"
stages:
  - build
  - deploy

build:
  stage: build
  image: docker:latest
  script:
    - docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD
    - docker build -t $DOCKER_IMAGE .
    - docker push $DOCKER_IMAGE
    - docker rmi $DOCKER_IMAGE
  only:
    - main
  tags:
    - docker-runner

deploy:
  stage: deploy
  image: ubuntu:latest
  before_script:
    - apt-get update -qy
    - apt-get install -y sshpass
  script:
    - sshpass -p $SSH_PASSWORD ssh -o StrictHostKeyChecking=no -p 22 $SSH_NAME  "kubectl set image deployment/$FOLDER_NAME $FOLDER_NAME=$DOCKER_IMAGE"
  only:
    - main
  tags:
    - docker-runner

總結

透過 GitLab CI/CD,您可以實現從建置到部署的完整流程自動化。這不僅節省了開發和部署時間,還確保了程式碼的品質和應用程式的穩定性。藉由適當的設定和變數管理,您可以根據您的需求進行自定義,並實現持續交付的目標。


上一篇
[Day25]GitLab Runner 教學:實現持續集成與持續部署
下一篇
[Day27]GitLab 通知設定
系列文
在open source環境,建置container環境及k8s(Minikube)的API佈署環境30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言